package com.jige.jigetodo.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jige.jigetodo.common.DeleteRequest;
import com.jige.jigetodo.model.dto.task.AddTaskRequest;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jige.jigetodo.model.dto.task.QueryTaskRequest;
import com.jige.jigetodo.model.dto.task.UpdateTaskRequest;
import com.jige.jigetodo.model.entity.Task;
import com.jige.jigetodo.model.vo.TaskVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
* @author Administrator
* @description 针对表【task(任务管理表)】的数据库操作Service
* @createDate 2025-05-08 22:10:34
*/
public interface TaskService extends IService<Task> {

    /**
     * 添加任务
     * @param addTaskRequest
     * @return
     */
    boolean addTask(AddTaskRequest addTaskRequest, HttpServletRequest request);

    /**
     * 更新任务
     * @param updateTaskRequest
     * @param request
     * @return
     */
    boolean updateTask(UpdateTaskRequest updateTaskRequest, HttpServletRequest request);

    /**
     * 通过id查询任务
     * @param queryTaskRequest
     * @return
     */
    Task getTaskById(QueryTaskRequest queryTaskRequest);

    /**
     * 获取任务VO
     * @param queryTaskRequest
     * @return
     */
    TaskVO getTaskVOById(QueryTaskRequest queryTaskRequest);

    /**
     * 获取用户任务列表
     * @return
     */
    List<Task> getTaskList(QueryTaskRequest queryTaskRequest);

    /**
     * 获取用户任务列表VO
     * @param queryTaskRequest
     * @return
     */
    List<TaskVO> getTaskVOList(QueryTaskRequest queryTaskRequest);

    /**
     * 分页查询用户任务列表
     * @param queryTaskRequest
     * @return
     */
    Page<Task> getTaskListByPage(QueryTaskRequest queryTaskRequest);

    /**
     * 根据id删除单个任务
     * @param deleteRequest
     * @return
     */
    boolean deleteTaskById(DeleteRequest deleteRequest);

    /**
     * 获取查询条件
     * @param queryTaskRequest
     * @return
     */
    QueryWrapper<Task> getQueryWrapper(QueryTaskRequest queryTaskRequest);

}
